from django.shortcuts import render
from django.views import View
from .models import Area
from django.http import JsonResponse
from django.core.cache import cache



class ProvinceAreasView(View):
    '''
    省级地区获取
    '''
    def get(self,request):
    # 1. 获省份模型类对象（查询集）
    # 增加缓存
    # 首先尝试从缓存中读取数据
        province_list = []

        province_list = cache.get('province_list')
         # 如果从缓存中没读到数据，就从数据库中读取
        if not province_list:
            provinces = Area.objects.filter(parent=None)

        # 把数据从查询集格式转换成字典格式
            province_list = []
            for province in provinces:
                province_list.append({
                    'id':province.id,
                    'name':province.name
                })
                # 缓存回填,以字典的形式存在
            cache.get('province_list',province_list,3600)
    # 2. 构建响应返回
        return JsonResponse({
            'code':0,
            'errmsg':'ok',
            'province_list':province_list
        })
#
class SubsAreaView(View):
    '''
    市级城市和区级城市的获取
    '''
    def get(self,request,pk):
        # pk传过来的还是父级行政区主键,pk-->省份id
        # 1.如果pk值是省，则过滤出来的是市
        # 2. 如果pk值是市，则过滤出来的是区
        # 获取pk对应的主键
        sub_data = None
        sub_data = cache.get('sub_area_%s'%pk)
        if not sub_data:
            f_area = Area.objects.get(pk=pk)
            # 根据省份id获取对应的市
            subs = Area.objects.filter(parent_id=pk)

        # 对市进行整理
            subs_list = []
            for sub in subs:
                subs_list.append({
                    'id':sub.id,
                    'name':sub.name
                })
            # 响应数据的构建
            sub_data= {
                'id':f_area.id,
                'name':f_area.name,
                'subs':subs_list
            }
            cache.get('sub_area_%s'%pk, sub_data, 3600)
        return JsonResponse({
            'code':0,
            'errmsg':'ok',
            'sub_data':sub_data
        })
